const Database=require("better-sqlite3");
const db=new Database("./mydata.sqlite",{
    fileMustExist:true,
    verbose:console.log
});


// 一个表中的所有数据
const stmt=db.prepare('select id,name from t_class');
let rows=stmt.all();
console.log(rows);

// 一个表中根据条件查找
const stmt2=db.prepare('select id,name from t_class where id=200002');
// let rows2=stmt2.get();
let rows2=stmt2.all();
console.log(rows2);


// ?一个语句占位符，一条语句中可以出现多个占位符，后续执行方法时候，通过形参的位置一一匹配占位符
const stmt3=db.prepare("select name from t_class where id=?");
let rows3=stmt3.get(200003);//单个对象
// let rows3=stmt3.all(200003);//数组格式
console.log(rows3);

//实际应用 搜索查询
const stmt4=db.prepare("select name from t_class where name like ? or name like ?");
let row4=stmt4.all('%2%','%3%');
console.log(row4);



// 添加操作
const stmt5=db.prepare('insert into t_user (username,password) values (?,?)');

/* stmt.run执行数据的写入操作
    方法执行后，如果添加成功，将返回执行状态对象
    { changes: 添加的数据的条数, lastInsertRowid: 为当前数据分配的id值 } */
let row5=stmt5.run('heruiyang','123');
console.log(row5);


//修改操作(必须要有数据指向条件，不然将所有的数据进行修改)
let sql='update t_user set username=? where id=?';
const stmt6=db.prepare(sql);
let row6=stmt6.run('yangyang',100004);//{ changes: 1, lastInsertRowid: 100006 }
console.log(row6);

//删除操作(必须要有数据指向条件，不然将所有的数据进行删除)
let sql2='delete from t_user where id=?';
const stmt7=db.prepare(sql2);
let row7=stmt7.run(100004);//{ changes: 1, lastInsertRowid: 100006 }
console.log(row7);